package de.herzog.bbp.model;

import java.io.Serializable;
import java.util.HashSet;
import java.util.Set;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Transient;

@Entity
@Table(name = "VEREINE")
public class Verein extends AbstractModel implements Serializable {

	private static final long serialVersionUID = -5177257779191449661L;

	@Id
	@Column(name = "V_NAME", nullable = false, length = 4)
	private String name;
	@Column(name = "V_LANGNAME")
	private String langName;
	@Column(name = "V_NUMMER")
	private String nummer;
	@OneToMany(cascade = CascadeType.ALL)
	@JoinColumn(name = "V_ID")
	private Set<Mannschaft> mannschaften = new HashSet<Mannschaft>(0);

	public Verein() {
		super();
	}

	public Verein(String name, String langName, String nummer) {
		super();
		setName(name);
		setLangName(langName);
		setNummer(nummer);
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getLangName() {
		return langName == null ? "F-" + getName() : langName;
	}

	public void setLangName(String langName) {
		this.langName = langName;
	}

	public String getNummer() {
		return nummer == null ? "?" : nummer;
	}

	public void setNummer(String nummer) {
		this.nummer = nummer;
	}

	public Set<Mannschaft> getMannschaften() {
		return mannschaften;
	}

	public void setMannschaften(Set<Mannschaft> mannschaften) {
		this.mannschaften = mannschaften;
	}

	public void addMannschaft(Mannschaft mannschaft) {
		mannschaft.setVerein(this);
	}

	@Transient
	public int getAnzahl() {
		return getMannschaften().size();
	}

	public String toString() {
		return getName();
	}
}
